package com.ruoyi.teacher.domain;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 教师信息对象 teacher
 * 
 * @author chenxl
 * @date 2025-04-08
 */
public class teacher extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 唯一 UUID */
    private String uuid;

    /** 教师工号（唯一标识，关联人事系统） */
    @Excel(name = "教职工号")
    private String teacherCode;

    /** 姓名 */
    @Excel(name = "姓名")
    private String name;

    /** 性别 */
    @Excel(name = "性别")
    private String sex;

    /** 职称 ID（关联职称字典表） */
    @Excel(name = "职称 ID", readConverterExp = "关=联职称字典表")
    private Long titleId;

    /** 学位 ID（关联学位字典表） */
    @Excel(name = "学位")
    private String degreeId;

    /** 研究领域 */
    @Excel(name = "研究领域")
    private String researchField;

    /** 所属学院 ID（关联学院表） */
    @Excel(name = "学院（部门）编号")
    private String collegeId;

    /** 联系邮箱 */
    @Excel(name = "联系邮箱")
    private String contactEmail;

    /** 联系电话 */
    @Excel(name = "联系电话")
    private String contactPhone;

    /** 导师类别 ID（关联导师类别字典表） */
    @Excel(name = "导师类别 ID", readConverterExp = "关=联导师类别字典表")
    private Long supervisorTypeId;

    /** 导师类型id（校内校外联合） */
    @Excel(name = "导师类型id", readConverterExp = "校=内校外联合")
    private Long mentorType;

    /** 招生名额（当前可招收学生数量） */
    @Excel(name = "招生名额", readConverterExp = "当=前可招收学生数量")
    private Long enrollmentQuota;

    /** 工作状态 ID（关联工作状态字典表） */
    @Excel(name = "工作状态 ID", readConverterExp = "关=联工作状态字典表")
    private Long workStatusId;

    /** 是否具备导师资格 ID（关联导师资格字典表，0=否，1=是） */
    @Excel(name = "是否具备导师资格 ID", readConverterExp = "关=联导师资格字典表，0=否，1=是")
    private Long isSupervisor;

    /** 入职时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "入职时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date hireDate;

    /** 学术头衔 ID（关联学术头衔字典表） */
    @Excel(name = "学术头衔 ID", readConverterExp = "关=联学术头衔字典表")
    private Long academicTitleId;

    /** 是否外聘教师（0=否，1=是） */
    @Excel(name = "是否外聘教师", readConverterExp = "0==否，1=是")
    private Integer foreignTeacher;

    /** 审核状态 ID（关联审核状态字典表，默认待审核） */
    @Excel(name = "审核状态 ID", readConverterExp = "关=联审核状态字典表，默认待审核")
    private Long auditStatusId;

    /** 主讲课程 ID 列表（JSON 格式，如：[1,2,3]） */
    @Excel(name = "主讲课程 ID 列表", readConverterExp = "J=SON,格=式，如：[1,2,3]")
    private String teachingCourses;

    /** 当前指导学生数量（实时统计） */
    @Excel(name = "当前指导学生数量", readConverterExp = "实=时统计")
    private Long studentCount;

    /**card_type、证件类型*/
    @Excel(name = "证件类型")
    private String cardType;
    /**id_number、身份证号码*/
    @Excel(name = "证件号码")
    private String idNumber;
    /**date_birth、出生日期*/
    @Excel(name = "出生日期")
    private String dateBirth;
    /**nationality、名族*/
    @Excel(name = "民族")
    private String nationality;
    /**politics_status、政治面貌*/
    @Excel(name = "政治面貌")
    private String politicsStatus;
    /**education_background、学历*/
    @Excel(name = "学历")
    private String educationBackground;
    /**professional_technical_posts、专业技术职务*/
    @Excel(name = "专业技术职务")
    private String professionalTechnicalPosts;
    /**current_professional_title、现职称*/
    @Excel(name = "现职称")
    private String currentProfessionalTitle;
    /**date_of_arrival_school、来校年月*/
    @Excel(name = "来校年月")
    private String dateOfArrivalSchool;
    /**faculty_staff_category、教职工类别*/
    @Excel(name = "教职工类别")
    private String facultyStaffCategory;

    public void setUuid(String uuid)
    {
        this.uuid = uuid;
    }

    public String getUuid() 
    {
        return uuid;
    }

    public void setTeacherCode(String teacherCode) 
    {
        this.teacherCode = teacherCode;
    }

    public String getTeacherCode() 
    {
        return teacherCode;
    }

    public void setName(String name) 
    {
        this.name = name;
    }

    public String getName() 
    {
        return name;
    }

    public void setSex(String sex)
    {
        this.sex = sex;
    }

    public String getSex()
    {
        return sex;
    }

    public void setTitleId(Long titleId) 
    {
        this.titleId = titleId;
    }

    public Long getTitleId() 
    {
        return titleId;
    }

    public void setDegreeId(String degreeId)
    {
        this.degreeId = degreeId;
    }

    public String getDegreeId()
    {
        return degreeId;
    }

    public void setResearchField(String researchField) 
    {
        this.researchField = researchField;
    }

    public String getResearchField() 
    {
        return researchField;
    }

    public void setCollegeId(String collegeId)
    {
        this.collegeId = collegeId;
    }

    public String getCollegeId()
    {
        return collegeId;
    }

    public void setContactEmail(String contactEmail) 
    {
        this.contactEmail = contactEmail;
    }

    public String getContactEmail() 
    {
        return contactEmail;
    }

    public void setContactPhone(String contactPhone) 
    {
        this.contactPhone = contactPhone;
    }

    public String getContactPhone() 
    {
        return contactPhone;
    }

    public void setSupervisorTypeId(Long supervisorTypeId) 
    {
        this.supervisorTypeId = supervisorTypeId;
    }

    public Long getSupervisorTypeId() 
    {
        return supervisorTypeId;
    }

    public void setMentorType(Long mentorType) 
    {
        this.mentorType = mentorType;
    }

    public Long getMentorType() 
    {
        return mentorType;
    }

    public void setEnrollmentQuota(Long enrollmentQuota) 
    {
        this.enrollmentQuota = enrollmentQuota;
    }

    public Long getEnrollmentQuota() 
    {
        return enrollmentQuota;
    }

    public void setWorkStatusId(Long workStatusId) 
    {
        this.workStatusId = workStatusId;
    }

    public Long getWorkStatusId() 
    {
        return workStatusId;
    }

    public void setIsSupervisor(Long isSupervisor) 
    {
        this.isSupervisor = isSupervisor;
    }

    public Long getIsSupervisor() 
    {
        return isSupervisor;
    }

    public void setHireDate(Date hireDate) 
    {
        this.hireDate = hireDate;
    }

    public Date getHireDate() 
    {
        return hireDate;
    }

    public void setAcademicTitleId(Long academicTitleId) 
    {
        this.academicTitleId = academicTitleId;
    }

    public Long getAcademicTitleId() 
    {
        return academicTitleId;
    }

    public void setForeignTeacher(Integer foreignTeacher) 
    {
        this.foreignTeacher = foreignTeacher;
    }

    public Integer getForeignTeacher() 
    {
        return foreignTeacher;
    }

    public void setAuditStatusId(Long auditStatusId) 
    {
        this.auditStatusId = auditStatusId;
    }

    public Long getAuditStatusId() 
    {
        return auditStatusId;
    }

    public void setTeachingCourses(String teachingCourses) 
    {
        this.teachingCourses = teachingCourses;
    }

    public String getTeachingCourses() 
    {
        return teachingCourses;
    }

    public void setStudentCount(Long studentCount) 
    {
        this.studentCount = studentCount;
    }

    public Long getStudentCount() 
    {
        return studentCount;
    }

    public String getCardType() {
        return cardType;
    }

    public void setCardType(String cardType) {
        this.cardType = cardType;
    }

    public String getIdNumber() {
        return idNumber;
    }

    public void setIdNumber(String idNumber) {
        this.idNumber = idNumber;
    }

    public String getDateBirth() {
        return dateBirth;
    }

    public void setDateBirth(String dateBirth) {
        this.dateBirth = dateBirth;
    }

    public String getNationality() {
        return nationality;
    }

    public void setNationality(String nationality) {
        this.nationality = nationality;
    }

    public String getPoliticsStatus() {
        return politicsStatus;
    }

    public void setPoliticsStatus(String politicsStatus) {
        this.politicsStatus = politicsStatus;
    }

    public String getEducationBackground() {
        return educationBackground;
    }

    public void setEducationBackground(String educationBackground) {
        this.educationBackground = educationBackground;
    }

    public String getProfessionalTechnicalPosts() {
        return professionalTechnicalPosts;
    }

    public void setProfessionalTechnicalPosts(String professionalTechnicalPosts) {
        this.professionalTechnicalPosts = professionalTechnicalPosts;
    }

    public String getCurrentProfessionalTitle() {
        return currentProfessionalTitle;
    }

    public void setCurrentProfessionalTitle(String currentProfessionalTitle) {
        this.currentProfessionalTitle = currentProfessionalTitle;
    }

    public String getDateOfArrivalSchool() {
        return dateOfArrivalSchool;
    }

    public void setDateOfArrivalSchool(String dateOfArrivalSchool) {
        this.dateOfArrivalSchool = dateOfArrivalSchool;
    }

    public String getFacultyStaffCategory() {
        return facultyStaffCategory;
    }

    public void setFacultyStaffCategory(String facultyStaffCategory) {
        this.facultyStaffCategory = facultyStaffCategory;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("uuid", getUuid())
            .append("teacherCode", getTeacherCode())
            .append("name", getName())
            .append("sex", getSex())
            .append("titleId", getTitleId())
            .append("degreeId", getDegreeId())
            .append("researchField", getResearchField())
            .append("collegeId", getCollegeId())
            .append("contactEmail", getContactEmail())
            .append("contactPhone", getContactPhone())
            .append("supervisorTypeId", getSupervisorTypeId())
            .append("mentorType", getMentorType())
            .append("enrollmentQuota", getEnrollmentQuota())
            .append("workStatusId", getWorkStatusId())
            .append("isSupervisor", getIsSupervisor())
            .append("hireDate", getHireDate())
            .append("academicTitleId", getAcademicTitleId())
            .append("foreignTeacher", getForeignTeacher())
            .append("auditStatusId", getAuditStatusId())
            .append("teachingCourses", getTeachingCourses())
            .append("studentCount", getStudentCount())
            .append("cardType", getCardType())
            .append("idNumber", getIdNumber())
            .append("dateBirth", getDateBirth())
            .append("nationality", getNationality())
            .append("politicsStatus", getPoliticsStatus())
            .append("educationBackground", getEducationBackground())
            .append("professionalTechnicalPosts", getProfessionalTechnicalPosts())
            .append("currentProfessionalTitle", getCurrentProfessionalTitle())
            .append("dateOfArrivalSchool", getDateOfArrivalSchool())
            .append("facultyStaffCategory", getFacultyStaffCategory())
            .toString();
    }


}
